LUX_Continua project __________ >>>>>>>Raffaele Carlani
#3:::::::::Riflessi


NURBS E MONDO POLIGONALE



Nel mondo della CG l’introduzione delle NURBS, rappresenta un’ulteriore sviluppo delle possibilità di modellazione di geometrie complesse attraverso lo strumento informatico.


I sistemi, per così dire tradizionali, si basano sulla così detta, modellazione poligonale (qui rientrano le maggiori applz. di rendering che si trovano sul mercato, da 3ds di Discreet a lightwave fino a XSI di SoftImage e Maya della Alias Wavefront). Questa tecnica di modellazione è basata sul poligono, che non è altro che la rappresentazione di un piano in uno spazio. Dato che il modo “a più basso livello” per rappresentare un piano nello spazio, è quello di definire tre punti per cui passa il piano, ecco perché i poligoni sono triangolari.



Un poligono, in sintesi, non è altro che una triade di coordinate grazie alle quali è possibile definire univocamente un piano.

Un insieme di poligoni viene chiamata mesh.

Questa tecnica sul piano teorico molto semplice, ha vantaggi e svantaggi.

Chiaramente la rappresentazioni si superfici curve, si riduce ad una sequenza di piani, incrementati a seconda della qualità della smussatura che si vuole attribuire alla superficie.



Per capire il concetto ho messo di seguito una pic, in cui si vede la stessa sfera con un numero di poligoni progressivamente crescente,

rispettivamente la divisione poligonale è di: 4,16,32,64.


Una sfera quindi è l’insieme di più poligoni, ed il grado di smusso è dato dal numero di questi.



Dal punto di vista teorico, il concetto di volume, deve essere slegato da quello di pieno e vuoto.

Nel mondo della CG, non esiste massa (questa affermazione non è propriamente vera…ma per ora si prenda per vera). I volumi, anche i più complicati, non sono altro che legami tra coordinate di punti. Il volume insomma propriamente detto non esiste se non come spazio virtuale racchiuso all’interno di una superficie(mesh),intesa come insieme di poligoni, e quindi come insieme di triadi di coordinate.

Il discorso del volume è importante, perché nell’esecuzione di operazioni booleane si ha l’impressione che i volumi siano “pieni”.

In realtà l’operazione booleana, è un algoritmo che permette all’utente di pensare in termini di pieno e vuoto, ma che in realtà riguarda solo la mesh che descrive questo pieno virtuale.

Di qui la nota allergia di molte applicazione esclusivamente poligonali per le operazioni booleane (3ds max, ad esempio, ha un grande sviluppo di plug-indi terze parti, dato che la questione booleane non è stata mai risolta fino in fondo).



In un programma di modellazione poligonale, il risultato di un’ operazione booleana tra due mesh è un’ altra mesh formata da un’opportuna rete di poligoni.



Le NURBS invece si comportano in tutt’altra maniera. Ma cominciamo con qualche definizione:



NURBS sta per Non Uniform Rational b-Spline, tradotto, B-Spline Razionali Non Uniformi.



· Non Uniformi significa che aree differenti di oggetti Nurbs (curve e superfici) possono avere proprietà (pesi) differenti e non sono del tutto uguali.

· Razionali significa che un oggetto NURBS può essere definito con formule matematiche

· B-Spline è una linea qualunque nello spazio tridimensionale che è curva in più di una direzione





Insomma un oggetto NURBS non è altro che un insieme di curve connesse nello spazio tridimensionale in modo da costituire una superficie.

Questo è quello che l’utente vede ed usa. Dal punto di vista dello sviluppo informatico, invece, si tratta di algoritmi estremamente complessi che permettono di costruire superfici sempre curve, che permettono, quindi la realizzazione di modelli organici e lisci.

Si pensi a quanto sia importante il paso avanti: da spline a mesh la differenza è solo quantitativa, si aggiunge cioè una proprietà, qualle spaziale.

Qui invece si salta di grado. Il principio delle Nurbs sono algoritmi (le b_spine). Le NURBS di conseguenza sono algoritmi di algoritmi.



Per loro natura le NURBS non possono avere spigoli vivi. E’ chiaro quindi che il loro utilizzo è indicato verso specifici campi di applicazione. Dal design, alla creazione di personaggi virtuali ecc…

Se vogliamo creare una mela, ad esempio, le NURBS sono ottime, se vogliamo creare un cubo invece no.

E qui bisogna fare alcune considerazioni.

Alcune applz ormai si occupano esclusivamente di modellazione NURBS.

Tutti i strumenti di modellazione dalle linee alle primitive solide sono composte da NURBS.

Ma, se le NURBS non possono avere spigoli, come faccio a disegnare un cubo?



Facciamo un passo indietro. Abbiamo detto che nei programmi poligonali, il risultato di un’operazione qualsiasi, è sempre una mesh. Molte applz parlano di editable mesh.

Insomma un piano, un cubo, un muro con 498786 finestre, le vetrate del quarto ordine del Guggenhheim di Bilbao, in un programma di modellazione poligonale sono “editable mesh”.



In un programma NURBS, invece, l’entità minima è proprio la NURBS, che è una superficie che non può avere spigoli vivi.

Un piano quadrato, ad esempio, non è altro che un tipo particolare di NURBS in cui la curvatura delle curve generatrici(!) è 0.

Per ottenere un cubo, quindi, dovrò far coincidere 6 piani uguali opportunamente posizionati.

Il risultato di questa operazione però non sarà una superficie nurbs, ma verrà chiamata, polisuperficie nurbs. La differenza è notevole, sul piano pratico, perché le operazioni che posso fare sulle superfici non è detto che si possano fare anche sulle polisuperfici, e su quello teorico.

Descrivere un piano in un’ ambiente poligonale è estremamente semplice.

Per fare la stessa cosa in un ambiente nurbs, invece, devo ricorrere ad una serie di risorse.



La dimostrazione tangibile è nel differente consumo di risorse di memoria fisica di un cubo NURBS o di un cubo Mesh a causa delle differenti informazioni che in un caso o nell’atro il cubo deve possedere.

Le informazioni di un cubo NURBS sono le seguenti,

1. algoritmi che mi decrive la 1° la prima superfice

2. algoritmi che mi decrive la 2° la prima superfice

3. algoritmi che mi decrive la 3° la prima superfice

4. algoritmi che mi decrive la 4° la prima superfice

5. algoritmi che mi decrive la 5° la prima superfice

6. algoritmi che mi decrive la 6° la prima superfice

7. algoritmo che indica il legame tra queste superfici e che definisce l’oggetto come polisuperficie

Le informazioni di un cubo Mesh, invece, sono:

1. elenco dei vertici e loro interrelazione.

A questo punto serve una considerazione teorica.

Le nurbs abbiamo detto permetteno di realizzare superfici smussate (organiche) con grande facilità. Nel campo della modellazione poligonale queste erano ottenute grazie alla densità poligonale, con delle difficoltà tecniche notevoli.

Insomma il lavoro umano è facilitato da algoritmi che scaricano il lavoro alla macchina. Le nurbs inoltre, devono essere sempre poligonalizzate ogni volta che si produce un rendering.

Nei parametri di configurazione dei rendering, dei soft all_nurbs esiste sempre la configurazione di meshatura in fase di pre_rendering, che è molto simile alla tendina di esportazione ad un file di disegno poligonale , (se non identico):





Questo perché tutte le tecnologie di ray-tracing sviluppate in questi anni lavorano su geometrie poligonali. Per avere un renderizzatore NURBS bisognerebbe scrivere degli algoritmi appositi, e che funzionerebbero solo con le NURBS. Infatti (per ora), è possibile passare da NURBS a mesh, ma non è vero il contrario.



Insomma l’universo NURBS rappresenta un ulteriore astrazione nel modo di lavorare all’interno della CG. Se vogliamo questo si traduce in un allontanamento dell’utente dalla comprensione più intuitiva dell’applicazione.

indice